Update following the release of Elixir 1.20 - #22
Merged
Conversation
```
$ mix compile
Compiling 2 files (.ex)
warning: a struct for Mix.Tasks.RclexDocker.Build.Options is expected on struct update:
%Mix.Tasks.RclexDocker.Build.Options{acc | dry_run: true}
but got type:
dynamic()
where "acc" was given the type:
# type: dynamic()
# from: lib/mix/tasks/rclex_docker/build.ex:139:43
acc
when defining the variable "acc", you must also pattern match on "%Mix.Tasks.RclexDocker.Build.Options{}".
hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of:
user = some_function()
%User{user | name: "John Doe"}
it is enough to write:
%User{} = user = some_function()
%{user | name: "John Doe"}
typing violation found at:
│
141 │ "--dry-run" -> %Options{acc | dry_run: true}
│ ~
│
└─ lib/mix/tasks/rclex_docker/build.ex:141:24: Mix.Tasks.RclexDocker.Build.parse_args/1
warning: a struct for Mix.Tasks.RclexDocker.Push.Options is expected on struct update:
%Mix.Tasks.RclexDocker.Push.Options{acc | dry_run: true}
but got type:
dynamic()
where "acc" was given the type:
# type: dynamic()
# from: lib/mix/tasks/rclex_docker/push.ex:118:43
acc
when defining the variable "acc", you must also pattern match on "%Mix.Tasks.RclexDocker.Push.Options{}".
hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of:
user = some_function()
%User{user | name: "John Doe"}
it is enough to write:
%User{} = user = some_function()
%{user | name: "John Doe"}
typing violation found at:
│
120 │ "--dry-run" -> %Options{acc | dry_run: true}
│ ~
│
└─ lib/mix/tasks/rclex_docker/push.ex:120:24: Mix.Tasks.RclexDocker.Push.parse_args/1
warning: a struct for Mix.Tasks.RclexDocker.Build.Options is expected on struct update:
%Mix.Tasks.RclexDocker.Build.Options{acc | latest: true}
but got type:
dynamic()
where "acc" was given the type:
# type: dynamic()
# from: lib/mix/tasks/rclex_docker/build.ex:139:43
acc
when defining the variable "acc", you must also pattern match on "%Mix.Tasks.RclexDocker.Build.Options{}".
hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of:
user = some_function()
%User{user | name: "John Doe"}
it is enough to write:
%User{} = user = some_function()
%{user | name: "John Doe"}
typing violation found at:
│
142 │ "--latest" -> %Options{acc | latest: true}
│ ~
│
└─ lib/mix/tasks/rclex_docker/build.ex:142:23: Mix.Tasks.RclexDocker.Build.parse_args/1
warning: a struct for Mix.Tasks.RclexDocker.Build.Options is expected on struct update:
%Mix.Tasks.RclexDocker.Build.Options{acc | multi: true}
but got type:
dynamic()
where "acc" was given the type:
# type: dynamic()
# from: lib/mix/tasks/rclex_docker/build.ex:139:43
acc
when defining the variable "acc", you must also pattern match on "%Mix.Tasks.RclexDocker.Build.Options{}".
hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of:
user = some_function()
%User{user | name: "John Doe"}
it is enough to write:
%User{} = user = some_function()
%{user | name: "John Doe"}
typing violation found at:
│
143 │ "--multi" -> %Options{acc | multi: true}
│ ~
│
└─ lib/mix/tasks/rclex_docker/build.ex:143:22: Mix.Tasks.RclexDocker.Build.parse_args/1
warning: a struct for Mix.Tasks.RclexDocker.Push.Options is expected on struct update:
%Mix.Tasks.RclexDocker.Push.Options{acc | latest: true}
but got type:
dynamic()
where "acc" was given the type:
# type: dynamic()
# from: lib/mix/tasks/rclex_docker/push.ex:118:43
acc
when defining the variable "acc", you must also pattern match on "%Mix.Tasks.RclexDocker.Push.Options{}".
hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of:
user = some_function()
%User{user | name: "John Doe"}
it is enough to write:
%User{} = user = some_function()
%{user | name: "John Doe"}
typing violation found at:
│
121 │ "--latest" -> %Options{acc | latest: true}
│ ~
│
└─ lib/mix/tasks/rclex_docker/push.ex:121:23: Mix.Tasks.RclexDocker.Push.parse_args/1
warning: a struct for Mix.Tasks.RclexDocker.Push.Options is expected on struct update:
%Mix.Tasks.RclexDocker.Push.Options{acc | multi: true}
but got type:
dynamic()
where "acc" was given the type:
# type: dynamic()
# from: lib/mix/tasks/rclex_docker/push.ex:118:43
acc
when defining the variable "acc", you must also pattern match on "%Mix.Tasks.RclexDocker.Push.Options{}".
hint: given pattern matching is enough to catch typing errors, you may optionally convert the struct update into a map update. For example, instead of:
user = some_function()
%User{user | name: "John Doe"}
it is enough to write:
%User{} = user = some_function()
%{user | name: "John Doe"}
typing violation found at:
│
122 │ "--multi" -> %Options{acc | multi: true}
│ ~
│
└─ lib/mix/tasks/rclex_docker/push.ex:122:22: Mix.Tasks.RclexDocker.Push.parse_args/1
Generated rclex_docker app
```
There was a problem hiding this comment.
Pull request overview
Updates this repository’s Elixir/Erlang target matrix to reflect the Elixir 1.20 release while keeping the project’s “latest” CI/recommended tag on the previous Elixir minor, and refreshes dev/test dependencies accordingly.
Changes:
- Updated documented supported Docker tags (and deprecated tag list) to include Elixir 1.20 / OTP 29 and set
latestto Humble + Elixir 1.19.5 / OTP 28.5. - Updated build/push target image tuples to the new Hex.pm Elixir base images and build dates, and adjusted
.tool-versionsto match the chosen “latest” toolchain. - Ran dependency updates (
mix.lockchanges) and tightened accumulator typing inparse_args/1to address a type inference warning.
Reviewed changes
Copilot reviewed 5 out of 6 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| README.md | Updates the published CI/recommended and deprecated Docker tag lists to match the new Elixir/Erlang targets. |
| mix.lock | Bumps dev/test tooling dependencies after mix deps.update --all. |
| lib/mix/tasks/rclex_docker/push.ex | Narrows Enum.reduce/3 accumulator type to %Options{} for cleaner type inference. |
| lib/mix/tasks/rclex_docker/build.ex | Same parse_args/1 accumulator type narrowing as in push task. |
| lib/mix/tasks/rclex_docker.ex | Updates target base images (Elixir/Erlang/Ubuntu/build-date) and the “latest” tuple to 1.19.5/OTP 28.5. |
| .tool-versions | Aligns local toolchain with the chosen “latest” (Erlang 28.5, Elixir 1.19.5-otp-28). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Elixir 1.20 Released!! ということで Elixir/Erlang のバージョンを整理しました.
これまでの慣例に従って latest は 1世代前の
humble-ex1.19.5-otp28.5として.tool-versionも合わせています.この際に型推論の Warning を観測したのでシュッと修正しました.mix deps.update --allも適用済みです.rclex にて CI test をパスしたらマージします.
Lyrical 対応と,latest をそろそろ Jazzy にする?は next task ということで,,,